package com.binhthuan.catechist.client.dto;

import java.util.HashSet;
import java.util.Set;

import name.pehl.piriti.client.json.Json;
import name.pehl.piriti.client.json.JsonReader;
import name.pehl.piriti.client.json.JsonWriter;

import com.google.gwt.core.client.GWT;

/**
 * @author Giang Đinh - Khối lớp, tương ứng với bảng <b>khoi_lop</b> trong cơ sở
 *         dữ liệu.
 */
public class Grade {

    public interface GradeReader extends JsonReader<Grade> {
    }
    public interface GradeWriter extends JsonWriter<Grade> {
    }

    public static GradeReader READER = GWT.create(GradeReader.class);
    public static GradeWriter WRITER = GWT.create(GradeWriter.class);

    /**
     * Mã khối lớp.
     */
    @Json
    private Integer id;
    
    /**
     * Tên khối lớp.
     */
    @Json
    private String name;
    
    /**
     * Trưởng khối lớp.
     */
    @Json
    private Catechist captain;
    
    /**
     * Các lớp trong khối.
     */
    @Json
    private Set<DoctrineClass> classes;

    public Grade() {
        classes = new HashSet<DoctrineClass>(0);
    }
    
    /**
     * Lấy mã khối lớp.
     * @return Mã khối lớp.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã khối lớp.
     * @param id
     *            Mã khối lớp.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy tên khối lớp.
     * @return Tên khối lớp.
     */
    public String getName() {
        return name;
    }

    /**
     * Gán tên khối lớp.
     * @param name
     *            Tên khối lớp.
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * Lấy trưởng khối lớp.
     * @return Trưởng khối lớp.
     */
    public Catechist getCaptain() {
        return captain;
    }

    /**
     * Gán trưởng khối lớp.
     * @param captain
     *            Trưởng khối lớp.
     */
    public void setCaptain(Catechist captain) {
        this.captain = captain;
    }

    /**
     * Lấy các lớp trong khối.
     * @return Các lớp trong khối.
     */
    public Set<DoctrineClass> getClasses() {
        return classes;
    }

    /**
     * Gán lớp trong khối.
     * @param classes 
     *            Các lớp trong khối.
     */
    public void setClasses(Set<DoctrineClass> classes) {
        this.classes = classes;
    }
}
